package system.service.sys;

import framework.base.BaseService;
import system.entity.SysConfig;
import system.vo.ConfigUI;
import system.vo.ConfigVO;

public interface SysConfigService extends BaseService<SysConfig, String> {

    /**
     * 获取配置版本号
     *
     * @return
     */
    String getConfigVersion();

    /**
     * 更新配置版本号
     */
    void updateConfigVersion();

    /**
     * 获取配置项
     *
     * @return
     */
    ConfigVO config();

    /**
     * 加载具有版本控制的缓存项
     *
     * @param key
     * @param cls
     * @param <T>
     * @return
     */
    <T> T getConfigOfVersion(String key, Class<T> cls);

    /**
     * 加载具有版本控制的缓存项
     *
     * @param key
     * @param obj
     * @return
     */
    void setConfigOfVersion(String key, Object obj);

    /**
     * 获取UI配置
     *
     * @return
     */
    ConfigUI getUI();
}